
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import javax.swing.*;

/**
 * Clase que crea un barra de herramientas
 *
 * @author Matías Díaz
 * @author Sergio Flores
 */
public class JBarraHerramientas extends JToolBar
{

    private JCronometro cronometro;
    private JLabel paused;

    /**
     * Contructor de la clase, que inicializa los parametros.
     *
     * @param ae corresponde al action listener para la barra.
     * @param opcion para la seleccionar si el cronometro seria visible o no.
     */
    public JBarraHerramientas ( ActionListener ae , boolean opcion )
    {
        ImageIcon iconPause = new ImageIcon ( CommandName.ICON_PAUSE );
        ImageIcon iconPlay = new ImageIcon ( CommandName.ICON_PLAY );
        ImageIcon iconNew = new ImageIcon ( CommandName.ICON_NEW );
        ImageIcon iconQuit = new ImageIcon ( CommandName.ICON_QUIT );
        //ImageIcon iconScore = new ImageIcon ( CommandName.ICON_NEW_SCORE );
        ButtonGroup botones = new ButtonGroup ();
        botones.add ( this.createToolButton ( iconNew , false , CommandName.NUEVO , ae ) );
        botones.add ( this.createToolButton ( iconPause , false , CommandName.PAUSE , ae ) );
        botones.add ( this.createToolButton ( iconPlay , false , CommandName.PLAY , ae ) );
        //botones.add ( this.createToolButton ( iconScore , false , CommandName.SCORE , ae ) );
        botones.add ( this.createToolButton ( iconQuit , false , CommandName.SALIR , ae ) );
        this.paused = new JLabel ( "PAUSE" );
        this.paused.setToolTipText ( CommandName.PAUSE );
        this.paused.setVisible ( false );
        this.cronometro = new JCronometro ();
        this.cronometro.setTiempoVisible ( opcion );
        super.add ( this.cronometro.retornaTiempo () , BorderLayout.EAST );
        super.add ( paused );
    }

    /**
     * Metodo que crea un boton
     *
     * @param icon corresponde al icono para un boton
     * @param state corresponde al estado de soleccionado o no
     * @param actionCommand corresponde a su comando de accionamiento
     * @param ae corresponde a su action listener
     * @return
     */
    private JToggleButton createToolButton ( Icon icon , boolean state , String actionCommand , ActionListener ae )
    {
        JToggleButton button = new JToggleButton ( icon );
        button.setSelected ( state );
        button.setActionCommand ( actionCommand );
        button.setToolTipText ( actionCommand );
        super.add ( button );
        button.addActionListener ( ae );
        return button;
    }

    /**
     * Metodo que pausa el cronometro de la barra.
     *
     * @param opcion corresponde al valor de pausar o continuar
     */
    public void setPause ( boolean opcion )
    {

        if ( opcion )
        {
            this.cronometro.pause ();
        }
        else
        {
            this.cronometro.continuar ();
        }
    }

    /**
     * Metodo que permite ver o no ver si esta pausado o no
     *
     * @param opcion es el que decide si lo muestra o no
     */
    public void setPauseVisible ( boolean opcion )
    {
        this.paused.setVisible ( opcion );
    }

    /**
     * Metodo que permite detener el cronometro de la barra.
     */
    public void stopCronometro ()
    {
        this.cronometro.stop ();
    }
}
